class Solution {
public:
    int longestArithSeqLength(vector<int>& nums) {
        int n=nums.size();
        unordered_map<int,int> hash;//保存最近的下标
        hash[nums[0]] = 0;
        int ret = 2;
        vector<vector<int>> dp(n,vector<int>(n,2));//初始化为2
        for(int i=1;i<n;i++)
        {
            for(int j=i+1;j<n;j++)
            {
                //先固定i在固定j
                int a = 2*nums[i]-nums[j];
                if(hash.count(a) )
                    dp[i][j] = dp[hash[a]][i]+1;
                
                
                ret = max(ret,dp[i][j]);
            }
            hash[nums[i]] = i;
        }
        return ret;
    }
};